PoC is a bidirectional, real-time and multi-party communication mode. It allows a client to communicate with one or more than one client. During a PoC service, a PoC server handles the talk burst control. When several clients participate in one PoC session, at a time, at most one client may have the talk burst, to talk, and other clients may only listen to the client having the talk burst. The client having the talk burst sends media packets that contain speech contents continuously to the PoC server. Each media packet carries a sequence number of the media packet, numbered in an ascending order of transmission.
At present, as specified by the Open Mobile Alliance (OMA), when the PoC service is applied, the client having the talk burst initiatively may release the talk burst by sending a talk burst release message to the PoC server. The client having the talk burst can determine the maximum sequence number of media packets required for the speech content in accordance with the number of the media packets required for the speech content and send the talk burst release message containing the maximum sequence number of media packets to the PoC server. Upon receiving the talk burst release message from the client having the talk burst, the PoC server acquires the maximum sequence number of media packets. The PoC server state for general talk burst changes from a TB_Taken state (TB: talk burst) to a pending TB_Release state. At this time, the client still has the talk burst before the PoC server successfully revokes the talk burst of the client.
When the PoC server state for general talk burst is in the pending TB_Release state, the PoC server revokes the talk burst of the client having the talk burst it a media packet received from the client having the talk burst has a sequence number equal to or greater than the maximum sequence number of media packets sent by the client having the talk burst previously.
In the existing PoC service, however, it the client releases the talk burst initiatively so that the talk burst is in a pending release state, the maximum sequence number of media packets sent by the client having the talk burst is too large or the client having the talk burst continues to send media packets with smaller sequence numbers after the maximum sequence number of media packets is sent. As a result, the PoC server does not receive a media packet whose sequence number is equal to or greater than the maximum sequence number of media packets sent by the client having the talk burst within a long time. Consequently, the talk burst of the client having the talk burst can't be revoked in time.
In addition, the PoC server may decide whether to revoke a talk burst by using a speech mute timer and a speech duration timer.
The timing durations of the speech mute timer and the speech duration timer are configurable.
The speech mute timer is adapted to monitor the duration without speech input from the client having the talk burst. It starts when the PoC server state for general talk burst transits to a TB_Taken state and there is no speech input from the client having the talk burst. It the speech mute timer expires, which indicates that the client having the talk burst has not input speech within a set duration, the PoC server revokes the talk burst of the client having the talk burst. When the PoC server revokes the talk burst of the client having the talk burst, the speech mute timer is disabled.
The speech duration timer is adapted to monitor the total speech duration of the client having the talk burst. It starts when the PoC server state for general talk burst transits to a TB_Taken state. It the speech duration timer expires, which indicates that the client having the talk burst has taken the talk burst for a duration longer than a set duration, the PoC server revokes the talk burst of the client having the talk burst. When the PoC server revokes the talk burst of the client having the talk burst, the speech duration timer is disabled.
In the existing PoC service, however, the client having the talk burst does not speak but a louder external voice is treated as speech input. In this case, the speech mute timer will not start and the PoC server will not revoke the talk burst in time according to the state of the speech mute timer. Moreover, the timing duration of the speech duration timer is often long. As a result, after the client has sent a talk burst release message to the PoC server, the speech mute timer probably does not start and there is still a long time before the speech duration timer expires. In this case, the client having the talk burst needs to wait for a long time before the talk burst is revoked.
In PoC applications, when a client having the talk burst initiatively releases a talk burst so that the talk burst is in a pending release state, existing conditions for revoking the talk burst of the client having the talk burst include: the speech mute timer expires, the speech duration timer expires or the PoC server receives a media packet from the client having the talk burst whose sequence number is equal to or greater than the maximum sequence number of media packets sent by the client having the talk burst previously.
However, when an existing condition for revoking the talk burst of the client having the talk burst is met, the talk burst of the client may be revoked in time or revoked after long-time waiting. As such, clients may have poor experience when using the PoC service or even misunderstand that the PoC service does not allow initiative release of a talk burst.
In addition, the PoC service may be charged in accordance with the speech duration of clients. After the client initiatively releases a talk burst, it the PoC server does not revoke the talk burst of the client in time, the speech duration of the client is extended passively. This brings unnecessary and unacceptable call charges to clients and restricts the deployment and application of the PoC service.